const blogTypeModel = require('../../model/blogTypeModel')
const sqlCondition = require("../../utils/sqlCondition")

class BlogTypeSer {
    // 查询
    async getBlogType(queryingData = null, listQuery) {
        const data = await blogTypeModel.findAndCountAll({
            where: queryingData,
            attributes: [
                ['id', 'id'],
                ['blog_type_name', 'blogTypeName'],
                ['blog_type_remark', 'blogTypeRemark'],
                ['blog_type_name', 'blogTypeName'],
                ['createdAt', 'createdDate'],
                ['updatedAt', 'updatedDate'],
            ],
            limit: listQuery.limit,
            offset: listQuery.limit * (listQuery.page - 1),
        })
        return data
    }

    // 查询所有
    async getBlogTypeAll() {
        const data = await blogTypeModel.findAndCountAll({
            attributes: [
                ['id', 'id'],
                ['blog_type_name', 'blogTypeName'],
                ['blog_type_remark', 'blogTypeRemark'],
                ['blog_type_name', 'blogTypeName'],
            ],
        })
        return data
    }

    // 添加
    async addBlogType(json) {
        const isok = await blogTypeModel.count({
            where: {
                blog_type_name: json.blog_type_name
            }
        })
        if (isok) {
            return {
                message: '当前博客类型名称已存在'
            }
        }
        const data = await blogTypeModel.create(json)
        return data
    }

    // 修改
    async editBlogType(json) {
        json = sqlCondition(json)
        // 先查询当前类型名称是否已存在
        const isOk = await blogTypeModel.count({
            where: {blog_type_name: json.blog_type_name}
        })
        if (isOk) {  // 如果存在
            return {
                message: '当前博客类型名称已存在'
            }
        } else {  // 如果不存在
            const editData = {
                blog_type_name: json.blog_type_name || undefined,
                blog_type_remark: json.blog_type_remark || undefined,
            }
            const data = await blogTypeModel.update(editData, {where: {id: json.id}})
            return data
        }

    }

    async deleteBlogType(json) {
        const data = await blogTypeModel.destroy({
            where: {
                blog_type_name: json.blog_type_name
            }
        })
        return data
    }

}

module.exports = new BlogTypeSer()
